From: Jasper St. Pierre Date: Thu, 30 Aug 2012 19:32:44 +0000 (-0300) Subject: windowManager: Disable the window dimmer when we close all attached dialogs X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6001 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=f8805e83111f82d9bedaaf9011ad10d2b2b54624;p=gnome-shell.git windowManager: Disable the window dimmer when we close all attached dialogs This saves some GLSL resources and an FBO. https://bugzilla.gnome.org/show_bug.cgi?id=683073 --- diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 9d438a9f6..6a52037d7 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -27,16 +27,24 @@ const WindowDimmer = new Lang.Class({ this._brightnessEffect = new Clutter.BrightnessContrastEffect(); actor.add_effect(this._brightnessEffect); this.actor = actor; + this._enabled = true; this._dimFactor = 0.0; + this._syncEnabled(); + }, + + _syncEnabled: function() { + this._brightnessEffect.enabled = (this._enabled && this._dimFactor > 0); }, setEnabled: function(enabled) { - this._brightnessEffect.enabled = enabled; + this._enabled = enabled; + this._syncEnabled(); }, set dimFactor(factor) { this._dimFactor = factor; this._brightnessEffect.set_brightness(factor * DIM_BRIGHTNESS); + this._syncEnabled(); }, get dimFactor() { @@ -45,10 +53,17 @@ const WindowDimmer = new Lang.Class({ }); function getWindowDimmer(actor) { - if (!actor._windowDimmer) - actor._windowDimmer = new WindowDimmer(actor); - - return actor._windowDimmer; + let enabled = Meta.prefs_get_attach_modal_dialogs(); + if (actor._windowDimmer) + actor._windowDimmer.setEnabled(enabled); + + if (enabled) { + if (!actor._windowDimmer) + actor._windowDimmer = new WindowDimmer(actor); + return actor._windowDimmer; + } else { + return null; + } } const WindowManager = new Lang.Class({ @@ -255,9 +270,7 @@ const WindowManager = new Lang.Class({ if (!actor) return; let dimmer = getWindowDimmer(actor); - let enabled = Meta.prefs_get_attach_modal_dialogs(); - dimmer.setEnabled(enabled); - if (!enabled) + if (!dimmer) return; Tweener.addTween(dimmer, { dimFactor: 1.0, @@ -271,15 +284,12 @@ const WindowManager = new Lang.Class({ if (!actor) return; let dimmer = getWindowDimmer(actor); - let enabled = Meta.prefs_get_attach_modal_dialogs(); - dimmer.setEnabled(enabled); - if (!enabled) + if (!dimmer) return; Tweener.addTween(dimmer, { dimFactor: 0.0, time: UNDIM_TIME, - transition: 'linear' - }); + transition: 'linear' }); }, _mapWindow : function(shellwm, actor) {